home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / c / egem_210 / egem / doku / history.txt < prev    next >
Encoding:
Text File  |  1995-11-25  |  17.2 KB  |  300 lines

  1. Version 2.10 (Änderungen gegenüber V2.00):
  2.     - neue Beispiel-Programme zur Demonstration der Fenster-Routinen
  3.       (u.a. Resource-Previewer, Clipboard-Viewer, XClipboard, Datei-Viewer)
  4.     - Light-Version der Library durch Definition des Makros 'SMALL_EGEM'
  5.     - Definition des View-Protokolls integriert
  6.     - neue Funktionen:
  7.         void SetDragDrop(int any_extension,char *exts)
  8.              -> gewünschte/bevorzugte Dateierweiterungen für das Drag&Drop-
  9.                 Protokoll festlegen (s. Anleitung)
  10.         int SendDragDrop(int msx,int msy,int kstate,char *name,
  11.                          char *ext,long size,char *data)
  12.              -> Daten per Drag&Drop-Protokoll an die Applikation senden,
  13.                 der das Fenster unter dem Mauszeiger gehört (s. Anleitung)
  14.         void ob_setstate(OBJECT *tree,int object,int state);
  15.         void ob_setflags(OBJECT *tree,int object,int flags);
  16.             -> Objektflags/-status eines Objekts setzen
  17.         void ob_select(DIAINFO *info,OBJECT *tree,int obj,int sel,int draw)
  18.             -> Objekt 'obj' im Baum 'tree' in Abhängigkeit vom Parameter
  19.                'select' (de-) selektieren und evtl. neuzeichnen (draw!=0).
  20.         void ob_disable(DIAINFO *info,OBJECT *tree,int obj,int dis,int draw)
  21.             -> Objekt 'obj' im Baum 'tree' in Abhängigkeit vom Parameter
  22.                'dis' dis-/enablen und evtl. neuzeichnen (draw!=0).
  23.         int ob_draw(DIAINFO *info,int object)
  24.             -> Objekt 'object' des Dialogs 'info' darstellen (verkürzter
  25.                Aufruf von ob_draw_chg(info,object,NULL,FAIL,FALSE))
  26.         void ob_clear_edit(OBJECT *tree)
  27.             -> Text in allen Eingabefeldern des Baums 'tree' löschen
  28.         void menu_item_enable(int object,int enable)
  29.             -> Menü-Eintrag 'object' aktivieren (enable!=0) oder
  30.                deaktivieren (enable==0)
  31.         void menu_select(int title,int select)
  32.             -> Menü-Titel 'title' normal (select==0) oder invers
  33.                (select!=0) darstellen
  34.         void close_all_dialogs(void)
  35.             -> alle geöffneten Dialoge schließen
  36.         void close_all_windows(void)
  37.             -> Alle geöffneten Fenster schließen. Sind vorher noch Dialoge
  38.                geöffnet, so werden diese ebenfalls geschlossen.
  39.         WIN *get_top_window(void)
  40.             -> WIN-Struktur zum obersten Fenster ermitteln
  41.         void window_name(WIN *win,char *title,char *icon_title)
  42.             -> Titel des Fensters 'win' setzen
  43.             -> title:      Zeiger auf Fenstertitel oder NULL
  44.                icon_title: Zeiger auf Fenstertitel im ikonifizierten Zu-
  45.                            stand oder NULL
  46.         void window_info(WIN *win,char *info)
  47.             -> Info-Zeile des Fensters 'win' auf 'info' setzen
  48.         int window_first(WIN *win,GRECT *rect);
  49.         int window_next(WIN *win,GRECT *rect);
  50.             -> Verkürzte Aufrufe von wind_xget(handle,WF_FIRSTXYWH,...)
  51.                bzw. wind_xget(handle,WF_NEXTXYWH,...)
  52.         void window_top(WIN *win)
  53.             -> Fenster 'win' nach oben bringen
  54.         void window_bottom(WIN *win)
  55.             -> Fenster 'win' nach unten legen
  56.         WIN *window_find(int x,int y)
  57.             -> WIN-Struktur des Fensters an den Koordinaten (x,y)
  58.                ermitteln
  59.         void window_slider(WIN *win,int vh,int pos,int size)
  60.             -> Position (pos) und Größe (size) des vertikalen
  61.                (vh==VERT_SLIDER) oder horizontalen (vh==HOR_SLIDER)
  62.                Sliders des Fensters 'win' setzen
  63.         void window_size(WIN *win,GRECT *size)
  64.             -> Ausmaße des Fensters 'win' auf 'size' setzen
  65.         void window_calc(int wctype,int kind,GRECT *in,GRECT *out)
  66.             -> Entspricht von der Funktionalität der AES-Funktion
  67.                wind_calc(), nur daß anstatt einzelner Parameter Zeiger
  68.                auf GRECT-Strukturen erwartet werden
  69.         void window_border(int kind,int x,int y,int w,int h,GRECT *out)
  70.             -> Koordinaten des Randbereichs (WC_BORDER) aus der linken,
  71.                oberen Ecke (x,y) des Fensters und der Breite/Höhe des
  72.                Arbeitsbereiches (w,h) berechnen
  73.         void scroll_window(WIN *win,int mode,GRECT *area)
  74.             -> Bereich 'area' des Fensters 'win' in Abhängigkeit vom Para-
  75.                meter 'mode' (LINE_START,LINE_END,WIN_START,WIN_END,
  76.                WIN_SCROLL,PAGE_LEFT,PAGE_UP,PAGE_RIGHT,PAGE_DOWN,LINE_LEFT,
  77.                LINE_UP,LINE_RIGHT,LINE_DOWN) scrollen
  78.         void window_reinit(WIN *win,char *title,char *icon_title,
  79.                            char *info,int home)
  80.             -> Fenster 'win' reinitialisieren und neuzeichnen. U.a.
  81.                wird gegebenenfalls die SCROLL-Struktur auf gültige
  82.                Werte gesetzt und die Größe des Fensters an die maximalen
  83.                bzw. minimalen Ausmaße angepaßt.
  84.             -> Parameter: (s.a. open_window())
  85.                home:       Scroll-Position in linke obere Ecke (home!=0)
  86.         void window_set_mouse(WIN *win,int in,int out,
  87.                               MFORM *in_form,MFORM *out_form)
  88.             -> Form des Mauszeigers innerhalb und außerhalb des Arbeits-
  89.                bereiches des Fensters 'win' festlegen und setzen.
  90.         void window_mouse(WIN *win)
  91.             -> Mauszeiger des Fensters 'win' entsprechend den durch
  92.                window_set_mouse() getroffenen Einstellungen setzen
  93.         int rc_sc_save(GRECT *area,RC_RECT *rc)
  94.             -> Bildschirmbereich 'area' in Rechteck-Struktur 'rc' sichern
  95.                (RC_RECT-Struktur und Rückgabewerte s. Anleitung)
  96.         int rc_sc_freshen(int sx,int sy,RC_RECT *rc)
  97.             -> Rechteck-Struktur 'rc' erneuern, d.h. Bildschirmbereich
  98.                an den Koordinaten (sx,sy) in Puffer kopieren (s. Anleitung)
  99.         int rc_sc_restore(int dx,int dy,RC_RECT *rc,int mode)
  100.             -> Rechteck-Struktur 'rc' freigeben und/oder an Position
  101.                (dx,dy) zurückkopieren (s. Anleitung)
  102.         int rc_sc_scroll(GRECT *in_out,int dist_x,int dist_y,GRECT *out2)
  103.             -> Rechteck 'in_out' um Distanz (dist_x,dist_y) verschieben
  104.                und neuzuzeichnende Rechtecke in 'in_out' und 'out2'
  105.                zurückgeben.
  106.             -> Rückgabewert: Anzahl der neuzuzeichnenden Rechtecke
  107.         int scrp_path(char *path,char *file)
  108.             -> vollständigen Zugriffspfad der Clipboard-Datei 'file'
  109.                (sofern file!=NULL) ermitteln (s. Anleitung)
  110.         char LowerChar(char ch)
  111.         char UpperChar(char ch)
  112.             -> Zeichen 'ch' in Klein-/Großbuchstaben umwandeln, wobei
  113.                auch Umlaute beachtet werden
  114.         void *GetMsgBuffer(long size)
  115.             -> globalen Speicher (u.a. für XAcc-2/AV-Kommunikation) der
  116.                Größe 'size' anfordern
  117.         void drive_changed(int drive)
  118.             -> Inhalt des Laufwerks 'drive' (0=A,1=B,2=C,...,-1=alle Lauf-
  119.                werke) wurde verändert
  120.                (SH_WDRAW-Nachricht wird an alle Applikationen gesendet)
  121.         char *GetFilename(char *path)
  122.             -> Zeiger auf Dateiname des Pfades 'path' ermitteln. Enthält
  123.                der Pfad keinen Dateinamen, so zeigt der Rückgabewert auf
  124.                das Ende (Nullbyte) des Pfades
  125.         char *GetExtension(char *path)
  126.             -> Zeiger auf Erweiterungs des Dateinamens des Pfades 'path'
  127.                ermitteln. Enthält der Pfad keinen Dateinamen oder keine
  128.                Erweiterung, so zeigt der Rückgabewert auf das Ende
  129.                (Nullbyte) des Pfades
  130.         char *GetPath(char *path)
  131.             -> Dateiname des Pfades 'path' wird entfernt und ein Zeiger
  132.                auf das Ende des Pfades (Nullbyte) zurückgegeben
  133.         int GetDrive(char *path)
  134.             -> Laufwerk des Pfades 'path' ermitteln (0=A,1=B,2=C,...)
  135.         void MakeFullpath(char *dest,char *path,char *file)
  136.             -> kompletten Pfadnamen aus Pfad 'path' (sofern path!=NULL,
  137.                wobei der Pfad keinen abschließenden Backslash enthalten
  138.                muß) und Datei 'file' erstellen und im String 'dest' zurück-
  139.                geben. Wird für den Pfad 'path' NULL übergeben, so muß
  140.                sich der Pfad bereits in 'dest' befinden!
  141.         int FileSelect(char *title,char *path,char *fname,char *sel,
  142.                        int no_insel)
  143.             -> Dateiselector aufrufen, wobei diese Funktion automatisch
  144.                erkennt, ob ein erweiterter Fileselector vorliegt (Para-
  145.                meter und Rückgabewerte s. Anleitung)
  146.         void MouseOn(void);
  147.         void MouseOff(void);
  148.             -> Mauszeiger an/-ausschalten. Diese Funktionen merken sich
  149.                intern, ob der Mauszeiger bereits an- oder ausgeschaltet ist
  150.         void MouseArrow(void);
  151.         void MouseCursor(void);
  152.         void MouseBee(void);
  153.         void MouseHourGlass(void);
  154.         void MousePointHand(void);
  155.         void MouseFlatHand(void);
  156.         void MouseThinCross(void);
  157.         void MouseThickCross(void);
  158.         void MouseOutlineCross(void);
  159.             -> Mausform einstellen
  160.         int sl_key(int scan,int ascii)
  161.             -> Aus Scan-Code 'scan' und ASCII-Code 'ascii' Tastencode
  162.                für SLKEY-Struktur berechnen
  163.      - neue Parameter:
  164.         int get_dialog_info(int *,int *,int *wins,DIAINFO **)
  165.             -> Anzahl der offenen Fenster, sofern wins!=NULL
  166.         int xdialog(OBJECT *,char *,char *icon_title,OBJECT *icon,...)
  167.         boolean open_dialog(OBJECT *,DIAINFO *,char *,
  168.                             char *icon_title,OBJECT *icon,...)
  169.         WIN *open_window(char *,char *icon_title,char *,char *info,
  170.                          OBJECT *icon,int,int,int min_w,int min_h,
  171.                          GRECT *max,GRECT *curr,SCROLL *scroll,
  172.                          void (*redraw)(WIN *,GRECT *))
  173.             -> icon_title: Fenstername im ikonifizierten Zustand oder NULL
  174.                info:       Zeiger auf Infozeile oder NULL
  175.                icon:       Zeiger auf Objektbaum, der für die ikonifizierte
  176.                            Darstellung benutzt wird, oder NULL
  177.                min_w:      minimale Fensterbreite
  178.                min_h:      minimale Fensterhöhe
  179.                max:        maximale Fensterausmaße
  180.                curr:       Fensterausmaße
  181.                scroll:     Zeiger auf initialisierte SCROLL-Struktur für
  182.                            automatisches Scrolling oder NULL
  183.                redraw:     Routine, die den Fenster-Redraw übernimmt
  184.                            oder NULL
  185.         void redraw_window(WIN *win,GRECT *area)
  186.             -> Löst einen Redraw über das Rechteck 'area' des
  187.                Fensters 'win' aus
  188.         int xalert(int,int,int,BITBLK *,int modal,...)
  189.             -> System-/Applikations-modale Alert-Box
  190.         void dial_colors(int,int,int,int,int,int,int,int alert_icon)
  191.             -> Farbe des Alert-Icons (0-15)
  192.         void exit_gem(int status)
  193.         void close_rsc(int status)
  194.             -> beide Funktionen melden jetzt zusätzlich die Menüleiste ab
  195.                und beenden das Programm mit dem Rückgabewert 'status'
  196.     - geänderte Parameter:
  197.         boolean menu_dropped(void)
  198.         void menu_enable(boolean enable,boolean show)
  199.             -> Zeiger auf Menüleiste muß nicht mehr übergeben werden
  200.         void menu_enable(boolean enable);
  201.             -> Menüleiste wird jetzt immer nach der Änderung neuge-
  202.                zeichnet
  203.         int scrp_find(char *extensions,char *);
  204.             -> Scrap-Directory (Clipboard) nach Scrap-Datei mit einer
  205.                der durch Komma, Punkt oder Leerzeichen getrennten
  206.                Erweiterungen 'extensions' (z.B. "img.txt.asc.ps")
  207.                durchsuchen
  208.             -> Rückgabewerte s. Anleitung
  209.     - neue globale Variablen:
  210.         int search:           appl_search()-Funktion vorhanden
  211.         int colors_available; Anzahl der Farbabstufungen
  212.     - neue Fensterdialog-Elemente (müssen von der Anwendung gesetzt und
  213.       ausgewertet werden) (Parameter 'mode' bei open_dialog() usw.):
  214.         #define WD_HSLIDER      256  /* hor. Slider, Pfeile links/rechts */
  215.         #define WD_VSLIDER      512  /* vert. Slider, Pfeile hoch/runter */
  216.         #define WD_SIZER        1024 /* Sizer */
  217.         #define WD_FULLER       2048 /* Fuller */
  218.         #define WD_INFO         4096 /* Info-Zeile */
  219.         /* Größe bei WM_FULLED/WM_SIZED automatisch anpassen und Nachricht
  220.            OBJC_SIZED (s. Anleitung) versenden (ansonsten darf die Dialog-
  221.            größe nicht geändert werden!) */
  222.         #define WD_SET_SIZE     8182
  223.     - Unterstützung der verschiedenen Drag&Drop-Varianten (neue Struktur
  224.       DRAG_DROP und neue Nachricht OBJC_DRAGGED)
  225.     - Funktion scrp_changed() (an offizielle Version des Clipboard-Proto-
  226.       kolls angepaßt) verschickt jetzt zusätzlich zur SC_CHANGED- eine
  227.       AV_PATH_UPDATE-Nachricht an den AV-Server
  228.     - scrp_clear() verschickt keine SC_CHANGED-Nachricht mehr
  229.     - bis zu 16 Zeilen Text in Alertboxen und Text optional mit Attributen
  230.     - DEFAULT-Button kann jetzt auch Help- oder Undo-Button sein
  231.     - XAcc-Struktur erweitert (av_msgs,va_msgs, s. Anleitung)
  232.     - Fenster-Struktur 'WIN' stark erweitert sowie neue Struktur 'SCROLL'
  233.       für automatisches Scrolling (s. Anleitung)
  234.     - Fenstername, -info und -slider werden nach dem ICFS-Deikonifizieren
  235.       auf ihre vorherigen Werte gesetzt
  236.     - vollautomatische Verwaltung von Fenstern im ikonifizierten Zustand
  237.         -> Funktion 'redraw_iconified' entfernt
  238.     - Fenster können mit Ctrl-Space ikonifiziert werden, wobei durch eine
  239.       zusätzlich gedrückte Shift-Taste alle Fenster ikonifiziert werden
  240.     - Fenster-Fuller kann durch Ctrl-'*' (Ziffernblock) angewählt werden
  241.     - ICFS-kompatible Ikonifizierung, falls weder ICFS noch MTOS-Iconify
  242.       vorhanden sind (dank Dirk Haun @ WI2)
  243.     - evtl. noch geöffnete Fenster werden am Programmende geschlossen
  244.     - Ist das oberste Fenster ein Dialog und besitzt dieser ein Eingabefeld,
  245.       so werden per ACC_TEXT-empfangene Texte in diesem Eingabefeld ein-
  246.       gefügt
  247.     - TriState-Checkboxen (Checkboxen mit TOUCHEXIT-Flag)
  248.     - beliebige GDOS-Fonts/-Größen sowie VDI-Schreibmodi bei Attribut-Text
  249.     - nicht-proportionale GDOS-Fonts in Eingabefeldern, sofern dies vom AES
  250.       unterstützt wird
  251.     - alle Eingabefelder eines Dialogs durch Shift-Esc löschen
  252.     - Enthält die Eingabemaske eines der Zeichen ',.;:\/' und wird dieses
  253.       Zeichen eingegeben, wenn der Cursor VOR diesem Zeichen steht, so wird
  254.       das Eingabefeld bis zu diesem Zeichen mit Leerzeichen gefüllt und der
  255.       Cursor hinter dieses Zeichen gesetzt
  256.     - Event-Handling (Timer,Messsages) und Echtzeitschieber "geringfügig"
  257.       optimiert sowie Pufferung von Fensternachrichten bei geöffneten
  258.       systemmodalen Dialogen oder Popups, 4 Timer-Events (MU_TIMER1-4)
  259.     - globale Variablen 'menu' (Menüleisten müssen jetzt immer mit
  260.       menu_install() an-/abgemeldet werden) und 'redraw' entfernt
  261.     - beim Schließen von Fenster wurden sich vergrößernde anstatt sich ver-
  262.       kleinernde Rechtecke gezeichnet
  263.     - Rückgabewert von init_gem() bzw. open_rsc() war u.a. fehlerhaft,
  264.       wenn keine Xacc/AV-Programmnamen übergeben wurden
  265.     - bei der Terminierung des Programms (exit_gem() bzw. close_rsc())
  266.       wird jetzt beachtet, ob das Programm als Accessory geladen wurde
  267.       und ob vorher eine erfolgreiche Initialisierung stattgefunden hat
  268.     - teilweise Redraw-Fehler bei Text-Eingabe in Hintergrundfenstern
  269.     - unter MultiTasking wird jetzt beachtet, welcher Applikation die
  270.       Menüleiste gehört, um eine unnötige Prozeßumschaltung zu verhindern
  271.     - Makro-Definition der wichtigsten Scan-Codes in Header-File integriert
  272.     - Nachricht WIN_SCROLLED wird an Applikation geschickt, wenn
  273.       die Scrollposition eines Fensters verändert wurde
  274.     - AP_TERM wurde im Beispielprogramm nicht korrekt ausgewertet
  275.     - die Funktion XaccBroadCast nutzt jetzt eine evtl. vorhandene
  276.       AES-Broadcast-Funktion (shel_write(7,...)
  277.     - EGEM-Programme laufen jetzt immer in der MiNT-Domain (vorher nur
  278.       bei Verwendung der MiNT-Library)
  279.     - Anleitung korrigiert und erweitert
  280.     - wurde bei rsrc_calc() bzw. rsrc_init() die Entwurfsfontgröße angegeben,
  281.       so hatte die Menüleiste u.a. bei anderen Systemfonts als 16x8 eine
  282.       zu kleine Höhe
  283.     - die Pure-C-Rechteck-Assemblerroutinen funktionierten nicht bei neg.
  284.       Koordinaten
  285.     - kleinere Probleme mit GNU-C/Lattice-C von Markus Kilbinger beseitigt
  286.       (u.a. Implementation der appl_search()-Funktion)
  287.     - kleinere Fehler in den Xacc2/AV-Protokollen sowie der Ereignis-
  288.       auswertung behoben
  289.     - Fenster von applikationsmodalen Alertboxen werden nicht mehr beim
  290.       AV-Server angemeldet
  291.     - Wurde mit einem Button-Event auf das Drücken und mit dem anderen
  292.       Button-Event auf das Loslassen einer Maustaste gewartet, so gab es
  293.       eine Endlosschleife
  294.     - Nachricht OBJC_CHANGED wurde bei Slidern und Radiobuttons nicht ver-
  295.       schickt
  296.     - Funktion 'scrp_init' entfernt (wird nur noch intern ausgeführt)
  297.     - Variable 'colors' enthielt Anzahl der Farbabstufungen der Farb-
  298.       palette und nicht die Anzahl der darstellbaren Farben
  299.     - Variablen 'max_w' sowie 'max_h' enthielten um einen Pixel zu kleine
  300.       Bildschirmbreite/-höhe